package com.tanjun.publicservice.web.biz.impl;

import com.tanjun.common.response.PageResponse;
import com.tanjun.common.utils.ConvertUntil;
import com.tanjun.pubilcservice.request.config.SysConfigPageRequest;
import com.tanjun.pubilcservice.request.config.SysConfigVo;
import com.tanjun.pubilcservice.response.config.SysConfigDto;
import com.tanjun.publicservice.web.biz.SysConfigBiz;
import com.tanjun.publicservice.web.orm.entity.SysConfig;
import com.tanjun.publicservice.web.service.SysConfigService;
import com.tanjun.web.service.LoginUserUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.time.LocalDateTime;
import java.util.List;
@Service
public class SysConfigBizImpl implements SysConfigBiz {
    @Autowired
    private SysConfigService sysConfigService;

    /**
     * 新增系统配置
     *
     * @param paramVo 系统配置数据
     */
    @Override
    public void addSysConfig(SysConfigVo paramVo) {
        SysConfig sysConfig= ConvertUntil.convert(paramVo,SysConfig.class);
        sysConfig.setCreateTime(LocalDateTime.now());
        sysConfig.setCreator(LoginUserUtil.getAdminOperate());
        sysConfigService.saveOrUpdateConfig(sysConfig);
    }

    /**
     * 修改系统配置
     *
     * @param paramVo 系统配置数据
     */
    @Override
    public void updateSysConfig(SysConfigVo paramVo) {
        SysConfig sysConfig= ConvertUntil.convert(paramVo,SysConfig.class);
        sysConfig.setUpdateTime(LocalDateTime.now());
        sysConfig.setUpdater(LoginUserUtil.getAdminOperate());
        sysConfigService.saveOrUpdateConfig(sysConfig);
    }

    /**
     * 删除系统配置
     *
     * @param ids 系统配置ids
     */
    @Override
    public void delSysConfigs(List<Long> ids) {
        sysConfigService.delSysConfigByIds(ids);
    }

    /**
     * 根据id获取系统配置
     *
     * @param id 配置id
     * @return 系统配置
     */
    @Override
    public SysConfigDto getSysConfigById(Long id) {
        SysConfig sysConfig=sysConfigService.getById(id);
        return ConvertUntil.convert(sysConfig,SysConfigDto.class);
    }

    /**
     * 根据系统配置key 获取系统配置值
     *
     * @param key 系统配置key
     * @return 系统配置
     */
    @Override
    public String getSystemConfigValueByKey(String key) {
        return sysConfigService.getSysConfigValueByKey(key);
    }

    /**
     * 分页查询系统配置
     *
     * @param paramVo 分区参数
     * @return 系统配置数据
     */
    @Override
    public PageResponse<SysConfigDto> listPageConfig(SysConfigPageRequest paramVo) {
//        Page<SysConfig> page=this.sysConfigService.page(new Page<>(paramVo.getPageNum(), paramVo.getPageSize()),
//                Wrappers.lambdaQuery(SysConfig.class)
//                        .like(StrUtil.isNotEmpty(paramVo.getConfigName()) ,SysConfig::getConfigName,paramVo.getConfigName())
//                        .like(StrUtil.isNotEmpty(paramVo.getConfigKey()),SysConfig::getConfigKey,paramVo.getConfigKey())
//        );
//        return ConvertUntil.convert(page,SysConfigDto.class);
        //todo 真实查询
        return null;
    }

    /**
     * 清除系统配置缓存
     */
    @Override
    public void clearCache() {
        sysConfigService.clearCache();
    }
}
